home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / clean / sun3.lha / Sun3 / deltaS.abc < prev    next >
Text File  |  1992-08-07  |  8KB  |  569 lines

  1. .comp 800 111111011
  2. .code     253      12      55
  3. .start _nostart_
  4. .endinfo
  5. .implab _cycle_in_spine
  6. .implab _reserve
  7. .implab _type_error
  8. .impdesc _Defer
  9. .implab _defer_code
  10. .implab _hnf
  11. .impdesc _Cons
  12. .impdesc _Tuple
  13. .impdesc _Select
  14. .impdesc _Nil
  15. .implab _driver
  16. .implab e_system_nAP
  17. .implab e_system_sAP
  18. .impdesc e_system_AP
  19. .desc m_deltaS _hnf _hnf 0 "deltaS"
  20.  
  21. .export e_deltaS_+S
  22. .export e_deltaS_s+S
  23. .export e_deltaS_n+S
  24. .desc e_deltaS_+S e_deltaS_n+S e_deltaS_l+S 2 "+S"
  25. .o 2 0
  26. e_deltaS_l+S:
  27.     push_args 0 1 1
  28.     update_a 2 1
  29.     create
  30.     update_a 0 3
  31.     pop_a 1
  32. .d 3 0
  33.     jmp ea+S
  34. .n 2 e_deltaS_+S
  35. .o 1 0
  36. e_deltaS_n+S:
  37.     push_node _reserve 2
  38. .o 3 0
  39. ea+S:
  40.             ||    STRING
  41.     push_a 1
  42.     jsr_eval
  43.     pop_a 1
  44.             ||    STRING
  45.     jsr_eval
  46.             ||    STRING
  47.             ||    STRING
  48. .o 3 0
  49. e_deltaS_s+S:
  50. .o 3 0
  51. s+S.1:
  52.             ||    Match code for alternative 1, stacksizes A: 2 B: 0
  53.             ||    Building the contractum, Stacksizes A: 2 B: 0
  54. .inline +S
  55.     catS 0 1 2
  56.     pop_a 2
  57. .end
  58. .d 1 0
  59.     rtn
  60. .export e_deltaS_=S
  61. .export e_deltaS_s=S
  62. .export e_deltaS_n=S
  63. .desc e_deltaS_=S e_deltaS_n=S e_deltaS_l=S 2 "=S"
  64. .o 2 0
  65. e_deltaS_l=S:
  66.     repl_args 1 1
  67. .d 2 0
  68.     jsr ea=S
  69. .o 0 1 b
  70.     create
  71.     fillB_b 0 0
  72.     pop_b 1
  73. .d 1 0
  74.     rtn
  75. .n 2 e_deltaS_=S
  76. .o 1 0
  77. e_deltaS_n=S:
  78.     push_node _reserve 2
  79. .d 2 0
  80.     jsr ea=S
  81. .o 0 1 b
  82.     getWL 0
  83.     fillB_b 0 0
  84.     release
  85.     pop_b 1
  86. .d 1 0
  87.     rtn
  88. .o 2 0
  89. ea=S:
  90.             ||    STRING
  91.     push_a 1
  92.     jsr_eval
  93.     pop_a 1
  94.             ||    STRING
  95.     jsr_eval
  96.             ||    STRING
  97.             ||    STRING
  98. .o 2 0
  99. e_deltaS_s=S:
  100. .o 2 0
  101. s=S.1:
  102.             ||    Match code for alternative 1, stacksizes A: 2 B: 0
  103.             ||    Building the contractum, Stacksizes A: 2 B: 0
  104. .inline =S
  105.     cmpS 0 1
  106.     pushI 0
  107.     eqI
  108.     pop_a 2
  109. .end
  110. .d 0 1 b
  111.     rtn
  112. .export e_deltaS_<>S
  113. .export e_deltaS_s<>S
  114. .export e_deltaS_n<>S
  115. .desc e_deltaS_<>S e_deltaS_n<>S e_deltaS_l<>S 2 "<>S"
  116. .o 2 0
  117. e_deltaS_l<>S:
  118.     repl_args 1 1
  119. .d 2 0
  120.     jsr ea<>S
  121. .o 0 1 b
  122.     create
  123.     fillB_b 0 0
  124.     pop_b 1
  125. .d 1 0
  126.     rtn
  127. .n 2 e_deltaS_<>S
  128. .o 1 0
  129. e_deltaS_n<>S:
  130.     push_node _reserve 2
  131. .d 2 0
  132.     jsr ea<>S
  133. .o 0 1 b
  134.     getWL 0
  135.     fillB_b 0 0
  136.     release
  137.     pop_b 1
  138. .d 1 0
  139.     rtn
  140. .o 2 0
  141. ea<>S:
  142.             ||    STRING
  143.     push_a 1
  144.     jsr_eval
  145.     pop_a 1
  146.             ||    STRING
  147.     jsr_eval
  148.             ||    STRING
  149.             ||    STRING
  150. .o 2 0
  151. e_deltaS_s<>S:
  152. .o 2 0
  153. s<>S.1:
  154.             ||    Match code for alternative 1, stacksizes A: 2 B: 0
  155.             ||    Building the contractum, Stacksizes A: 2 B: 0
  156. .inline <>S
  157.     cmpS 0 1
  158.     pushI 0
  159.     eqI
  160.     notB
  161.     pop_a 2
  162. .end
  163. .d 0 1 b
  164.     rtn
  165. .export e_deltaS_<S
  166. .export e_deltaS_s<S
  167. .export e_deltaS_n<S
  168. .desc e_deltaS_<S e_deltaS_n<S e_deltaS_l<S 2 "<S"
  169. .o 2 0
  170. e_deltaS_l<S:
  171.     repl_args 1 1
  172. .d 2 0
  173.     jsr ea<S
  174. .o 0 1 b
  175.     create
  176.     fillB_b 0 0
  177.     pop_b 1
  178. .d 1 0
  179.     rtn
  180. .n 2 e_deltaS_<S
  181. .o 1 0
  182. e_deltaS_n<S:
  183.     push_node _reserve 2
  184. .d 2 0
  185.     jsr ea<S
  186. .o 0 1 b
  187.     getWL 0
  188.     fillB_b 0 0
  189.     release
  190.     pop_b 1
  191. .d 1 0
  192.     rtn
  193. .o 2 0
  194. ea<S:
  195.             ||    STRING
  196.     push_a 1
  197.     jsr_eval
  198.     pop_a 1
  199.             ||    STRING
  200.     jsr_eval
  201.             ||    STRING
  202.             ||    STRING
  203. .o 2 0
  204. e_deltaS_s<S:
  205. .o 2 0
  206. s<S.1:
  207.             ||    Match code for alternative 1, stacksizes A: 2 B: 0
  208.             ||    Building the contractum, Stacksizes A: 2 B: 0
  209. .inline <S
  210.     pushI    0
  211.     cmpS 0 1
  212.     pop_a 2
  213.     ltI
  214. .end
  215. .d 0 1 b
  216.     rtn
  217. .export e_deltaS_>S
  218. .export e_deltaS_s>S
  219. .export e_deltaS_n>S
  220. .desc e_deltaS_>S e_deltaS_n>S e_deltaS_l>S 2 ">S"
  221. .o 2 0
  222. e_deltaS_l>S:
  223.     repl_args 1 1
  224. .d 2 0
  225.     jsr ea>S
  226. .o 0 1 b
  227.     create
  228.     fillB_b 0 0
  229.     pop_b 1
  230. .d 1 0
  231.     rtn
  232. .n 2 e_deltaS_>S
  233. .o 1 0
  234. e_deltaS_n>S:
  235.     push_node _reserve 2
  236. .d 2 0
  237.     jsr ea>S
  238. .o 0 1 b
  239.     getWL 0
  240.     fillB_b 0 0
  241.     release
  242.     pop_b 1
  243. .d 1 0
  244.     rtn
  245. .o 2 0
  246. ea>S:
  247.             ||    STRING
  248.     push_a 1
  249.     jsr_eval
  250.     pop_a 1
  251.             ||    STRING
  252.     jsr_eval
  253.             ||    STRING
  254.             ||    STRING
  255. .o 2 0
  256. e_deltaS_s>S:
  257. .o 2 0
  258. s>S.1:
  259.             ||    Match code for alternative 1, stacksizes A: 2 B: 0
  260.             ||    Building the contractum, Stacksizes A: 2 B: 0
  261. .inline >S
  262.     cmpS 0 1
  263.     pushI    0
  264.     pop_a 2
  265.     ltI
  266. .end
  267. .d 0 1 b
  268.     rtn
  269. .export e_deltaS_<=S
  270. .export e_deltaS_s<=S
  271. .export e_deltaS_n<=S
  272. .desc e_deltaS_<=S e_deltaS_n<=S e_deltaS_l<=S 2 "<=S"
  273. .o 2 0
  274. e_deltaS_l<=S:
  275.     repl_args 1 1
  276. .d 2 0
  277.     jsr ea<=S
  278. .o 0 1 b
  279.     create
  280.     fillB_b 0 0
  281.     pop_b 1
  282. .d 1 0
  283.     rtn
  284. .n 2 e_deltaS_<=S
  285. .o 1 0
  286. e_deltaS_n<=S:
  287.     push_node _reserve 2
  288. .d 2 0
  289.     jsr ea<=S
  290. .o 0 1 b
  291.     getWL 0
  292.     fillB_b 0 0
  293.     release
  294.     pop_b 1
  295. .d 1 0
  296.     rtn
  297. .o 2 0
  298. ea<=S:
  299.             ||    STRING
  300.     push_a 1
  301.     jsr_eval
  302.     pop_a 1
  303.             ||    STRING
  304.     jsr_eval
  305.             ||    STRING
  306.             ||    STRING
  307. .o 2 0
  308. e_deltaS_s<=S:
  309. .o 2 0
  310. s<=S.1:
  311.             ||    Match code for alternative 1, stacksizes A: 2 B: 0
  312.             ||    Building the contractum, Stacksizes A: 2 B: 0
  313. .inline <=S
  314.     cmpS 0 1
  315.     pushI    0
  316.     pop_a 2
  317.     ltI
  318.     notB
  319. .end
  320. .d 0 1 b
  321.     rtn
  322. .export e_deltaS_>=S
  323. .export e_deltaS_s>=S
  324. .export e_deltaS_n>=S
  325. .desc e_deltaS_>=S e_deltaS_n>=S e_deltaS_l>=S 2 ">=S"
  326. .o 2 0
  327. e_deltaS_l>=S:
  328.     repl_args 1 1
  329. .d 2 0
  330.     jsr ea>=S
  331. .o 0 1 b
  332.     create
  333.     fillB_b 0 0
  334.     pop_b 1
  335. .d 1 0
  336.     rtn
  337. .n 2 e_deltaS_>=S
  338. .o 1 0
  339. e_deltaS_n>=S:
  340.     push_node _reserve 2
  341. .d 2 0
  342.     jsr ea>=S
  343. .o 0 1 b
  344.     getWL 0
  345.     fillB_b 0 0
  346.     release
  347.     pop_b 1
  348. .d 1 0
  349.     rtn
  350. .o 2 0
  351. ea>=S:
  352.             ||    STRING
  353.     push_a 1
  354.     jsr_eval
  355.     pop_a 1
  356.             ||    STRING
  357.     jsr_eval
  358.             ||    STRING
  359.             ||    STRING
  360. .o 2 0
  361. e_deltaS_s>=S:
  362. .o 2 0
  363. s>=S.1:
  364.             ||    Match code for alternative 1, stacksizes A: 2 B: 0
  365.             ||    Building the contractum, Stacksizes A: 2 B: 0
  366. .inline >=S
  367.     pushI    0
  368.     cmpS 0 1
  369.     pop_a 2
  370.     ltI
  371.     notB
  372. .end
  373. .d 0 1 b
  374.     rtn
  375. .export e_deltaS_INDEX
  376. .export e_deltaS_sINDEX
  377. .export e_deltaS_nINDEX
  378. .desc e_deltaS_INDEX e_deltaS_nINDEX e_deltaS_lINDEX 2 "INDEX"
  379. .o 2 0
  380. e_deltaS_lINDEX:
  381.     repl_args 1 1
  382. .d 2 0
  383.     jsr eaINDEX
  384. .o 0 1 c
  385.     create
  386.     fillC_b 0 0
  387.     pop_b 1
  388. .d 1 0
  389.     rtn
  390. .n 2 e_deltaS_INDEX
  391. .o 1 0
  392. e_deltaS_nINDEX:
  393.     push_node _reserve 2
  394. .d 2 0
  395.     jsr eaINDEX
  396. .o 0 1 c
  397.     getWL 0
  398.     fillC_b 0 0
  399.     release
  400.     pop_b 1
  401. .d 1 0
  402.     rtn
  403. .o 2 0
  404. eaINDEX:
  405.             ||    INT
  406.     push_a 1
  407.     jsr_eval
  408.     pop_a 1
  409.             ||    STRING
  410.     jsr_eval
  411.             ||    INT
  412.     pushI_a 1
  413.             ||    STRING
  414.     update_a 0 1
  415.     pop_a 1
  416. .o 1 1 i
  417. e_deltaS_sINDEX:
  418. .o 1 1 i
  419. sINDEX.1:
  420.             ||    Match code for alternative 1, stacksizes A: 1 B: 1
  421.             ||    Building the contractum, Stacksizes A: 1 B: 1
  422. .inline INDEX
  423.     indexS    0
  424.     pop_a 1
  425. .end
  426. .d 0 1 c
  427.     rtn
  428. .export e_deltaS_SLICE
  429. .export e_deltaS_sSLICE
  430. .export e_deltaS_nSLICE
  431. .desc e_deltaS_SLICE e_deltaS_nSLICE e_deltaS_lSLICE 3 "SLICE"
  432. .o 2 0
  433. e_deltaS_lSLICE:
  434.     push_args 0 2 2
  435.     update_a 3 2
  436.     create
  437.     update_a 0 4
  438.     pop_a 1
  439. .d 4 0
  440.     jmp eaSLICE
  441. .n 3 e_deltaS_SLICE
  442. .o 1 0
  443. e_deltaS_nSLICE:
  444.     push_node _reserve 3
  445. .o 4 0
  446. eaSLICE:
  447.             ||    INT
  448.     push_a 2
  449.     jsr_eval
  450.     pop_a 1
  451.             ||    INT
  452.     push_a 1
  453.     jsr_eval
  454.     pop_a 1
  455.             ||    STRING
  456.     jsr_eval
  457.             ||    INT
  458.     pushI_a 2
  459.             ||    INT
  460.     pushI_a 1
  461.             ||    STRING
  462.     update_a 0 2
  463.     pop_a 2
  464. .o 2 2 i i
  465. e_deltaS_sSLICE:
  466. .o 2 2 i i
  467. sSLICE.1:
  468.             ||    Match code for alternative 1, stacksizes A: 1 B: 2
  469.             ||    Building the contractum, Stacksizes A: 1 B: 2
  470. .inline SLICE
  471.     sliceS 0 1
  472.     pop_a 1
  473. .end
  474. .d 1 0
  475.     rtn
  476. .export e_deltaS_UPDATE
  477. .export e_deltaS_sUPDATE
  478. .export e_deltaS_nUPDATE
  479. .desc e_deltaS_UPDATE e_deltaS_nUPDATE e_deltaS_lUPDATE 3 "UPDATE"
  480. .o 2 0
  481. e_deltaS_lUPDATE:
  482.     push_args 0 2 2
  483.     update_a 3 2
  484.     create
  485.     update_a 0 4
  486.     pop_a 1
  487. .d 4 0
  488.     jmp eaUPDATE
  489. .n 3 e_deltaS_UPDATE
  490. .o 1 0
  491. e_deltaS_nUPDATE:
  492.     push_node _reserve 3
  493. .o 4 0
  494. eaUPDATE:
  495.             ||    INT
  496.     push_a 2
  497.     jsr_eval
  498.     pop_a 1
  499.             ||    CHAR
  500.     push_a 1
  501.     jsr_eval
  502.     pop_a 1
  503.             ||    STRING
  504.     jsr_eval
  505.             ||    INT
  506.     pushI_a 2
  507.             ||    CHAR
  508.     pushC_a 1
  509.             ||    STRING
  510.     update_a 0 2
  511.     pop_a 2
  512. .o 2 2 c i
  513. e_deltaS_sUPDATE:
  514. .o 2 2 c i
  515. sUPDATE.1:
  516.             ||    Match code for alternative 1, stacksizes A: 1 B: 2
  517.             ||    Building the contractum, Stacksizes A: 1 B: 2
  518. .inline UPDATE
  519.     updateS 0 1
  520.     pop_a 1
  521. .end
  522. .d 1 0
  523.     rtn
  524. .export e_deltaS_LENGTH
  525. .export e_deltaS_sLENGTH
  526. .export e_deltaS_nLENGTH
  527. .desc e_deltaS_LENGTH e_deltaS_nLENGTH e_deltaS_lLENGTH 1 "LENGTH"
  528. .o 2 0
  529. e_deltaS_lLENGTH:
  530.     pop_a 1
  531. .d 1 0
  532.     jsr eaLENGTH
  533. .o 0 1 i
  534.     create
  535.     fillI_b 0 0
  536.     pop_b 1
  537. .d 1 0
  538.     rtn
  539. .n 1 e_deltaS_LENGTH
  540. .o 1 0
  541. e_deltaS_nLENGTH:
  542.     push_node _reserve 1
  543. .d 1 0
  544.     jsr eaLENGTH
  545. .o 0 1 i
  546.     getWL 0
  547.     fillI_b 0 0
  548.     release
  549.     pop_b 1
  550. .d 1 0
  551.     rtn
  552. .o 1 0
  553. eaLENGTH:
  554.             ||    STRING
  555.     jsr_eval
  556.             ||    STRING
  557. .o 1 0
  558. e_deltaS_sLENGTH:
  559. .o 1 0
  560. sLENGTH.1:
  561.             ||    Match code for alternative 1, stacksizes A: 1 B: 0
  562.             ||    Building the contractum, Stacksizes A: 1 B: 0
  563. .inline LENGTH
  564.     lenS 0
  565.     pop_a 1
  566. .end
  567. .d 0 1 i
  568.     rtn
  569.